#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<vector>
#include<string>
#include<stack>
#include<queue>

using namespace std;
//int main()
//{
//    string str1, str2;
//    getline(cin, str1);
//    cin >> str2;
//    for (size_t j = 0; j < str2.size(); j++) 
//    {
//        while (str1.find(str2[j]) != string::npos)
//        {
//            str1.erase(str1.find(str2[j]), 1);
//        }
//    }
//    cout << str1 << endl;
//    return 0;
//}

//int main()
//{
//    int n;
//    while (cin >> n)
//    {
//        int sum = n * (n + 1) / 2;
//        for (int i = 0; i < n; i++)
//        {
//            int j;
//            cin >> j;
//            sum -= j;
//        }
//        cout << sum << endl;
//    }
//}

class GrayCode 
{
public:
    vector<string> getGray(int n) 
    {
        // write code here
        if (n <= 0) return res;
        res.reserve(pow(2, n));
        add(0, n);
        return res;
    }
    void add(int i, int n)
    {
        if (i >= n)
        {
            return;
        }
        if (i == 0)
        {
            res.push_back("0");
            res.push_back("1");
            add(i + 1, n);
        }
        else
        {
            int size = res.size();
            vector<string> tmp(size);
            for (int i = 0; i < size; i++)
            {
                tmp[size - 1 - i] = '1' + res[i];
                res[i] = '0' + res[i];

            }
            for (string s : tmp)
            {
                res.push_back(s);
            }
            add(i + 1, n);
        }
    }


private:
    vector<string> res;
};


//int main() 
//{
//    int n;
//    string res;
//    cin >> n;
//    while (n) 
//    {
//        if (n & 1)
//        {
//            n = (n - 1) >> 1, res += '2';
//        }
//        else
//        {
//            n = (n - 2) >> 1, res += '3';
//        }
//    }
//    cout << string(res.rbegin(), res.rend()) << endl;
//    return 0;
//}

class BinarySearch 
{
public:
    int getPos(vector<int> A, int n, int val) 
    {
        if (n <= 0)
        {
            return -1;
        }
        int left = 0, right = n - 1;
        while (left <= right)
        {
            int mid = (left + right) / 2;
            if (val == A[mid])
            {
                int i = mid - 1;
                for (; i >= 0 && val == A[i]; i--)
                { }
                return i + 1;
            }
            else if (val > A[mid])
            {
                left = mid + 1;
            }
            else
            {
                right = mid - 1;
            }
        }
        return -1;
    }
};

int main()
{
    int n;
    while (cin >> n)
    {
        vector<int> nums(n);
        for (int i = 0; i < n; i++)
        {
            cin >> nums[i];
        }
        int i = 0, j = n - 1;
        long long left = 0, right = 0;
        long long res = 0;
        if (n <= 1)
        {
            cout << 0 << endl;
            continue;
        }
        while (i <= j)
        {
            if (left <= right)
            {
                if (left == right)
                {
                    res = left;
                }
                left += nums[i];
                i++;
            }
            else
            {
                right += nums[j];
                j--;
            }
        }
        if (left == right)
        {
            res = left;
        }
        cout << res << endl;
    }
}
